In general, computing resources and services of large-scale IT platforms and other distributed network computing environment must be effectively and efficiently managed to ensure optimal and reliable performance. One aspect of network management involves provisioning of managed computing resources for purposes of, e.g., resource allocation and implementing changes and updates. For example, the provisioning of managed resources includes, e.g., deploying, installing, uninstalling, upgrading and configuring application services or otherwise implementing changes for hardware, software, network and/or storage resources. The process of formulating change plans and provisioning of managed resources to implement such changes is not trivial, and such processes are typically very complex, time-consuming, repetitive and error-prone especially for large-scale IT computing environments. Indeed, provisioning can be burdensome and can take relatively long periods of time due to the fact that, e.g., the complex interdependencies between applications and their supporting services are not made explicit, thus requiring human involvement and expertise. Moreover, conventional service provisioning systems are essentially isolated from the change management process. Conventional provisioning systems typically employ proprietary workflow/scripting languages, which makes it difficult for a change manager to formulate reusable change plans that can be understood by different provisioning systems.
For example, conventional provisioning systems typically provide a GUI (graphical user-interface) that allows system administrators to define and execute provisioning scripts. A provisioning script typically consists of a sequence of pre-defined activities (provisioning operations) that can be manually adapted and customized by an administrator, as well as aggregated into new scripts. For instance, a sequence of pre-defined activities for provisioning a website may include steps such as creating a temporary installation directory, copying an installation image of an HTTP (Hypertext Transfer Protocol) server, uncompressing a software package, launching the installation, updating a configuration file, copying and installing web site content (HTML pages, pictures etc.), configuring access rights, starting the HTTP server, and performing cleanup tasks once the installation has been completed successfully. For every operation, the administrator can manually specify step(s) to perform if the operation fails, such as undoing the installation or notifying the administrator.
Conventional provisioning systems that require such fine-grained definitions of provisioning operations assume that administrators have a detailed understanding of the steps involved to formulate a plan for provisioning complex, multi-tiered systems. However, a lack of knowledge about the structure of a distributed system and the dependencies between fine-grained components in the system (and therefore the interdependencies between activities in a provisioning process) often tend to make an administrator overly prudent when designing provisioning processes, thus resulting in inefficiencies. Proper change management is critical to avoid operator errors that are a major cause of network services failures. As network computing systems become more complex, it becomes increasingly important to implement methods that enable more efficient change management and provisioning processes, which support automated control and execution of change operations in a consistent error-free manner.